package ui;

import domain.Player;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import static service.SettlementSercive.getAchievement;
import static service.SettlementSercive.getEvaluate;

/**
 * 结算界面
 * 页面美化:szy
 */
public class SettlementJFrame extends JFrame implements MouseListener {

     Player player = SelectAttributesJFrame.player;

    JButton backTOGameMenuButton = new JButton("返回主菜单");

    JButton viewLifeReviewButton = new JButton("点击查看人生回顾");

    JButton restartButton = new JButton("重新游戏");

    JButton exitButton = new JButton("退出游戏");

    JLabel titleLabel = new JLabel("结算");

    JLabel achieveLabel = new JLabel("达成的成就:");

    JTextArea achieveTextArea = new JTextArea(getAchievement(player));

    JLabel evaluateLabel = new JLabel("获得的评价:");

    JTextArea evaluateTextArea = new JTextArea(getEvaluate(player));



    public SettlementJFrame() {
        //初始化界面
        initJFrame();
        //在这个界面中添加内容
        initView();
        //添加图片
        initImage();
        //是否可见(写在最后)
        this.setVisible(true);
    }
    private void initImage() {
        //添加背景图片
        JLabel background = new JLabel(new ImageIcon(this.getClass().getResource("/image/RegisterJFrame/背景.png")));
        background.setBounds(0, 0, 603, 680);
        this.getContentPane().add(background);
    }
    /**
     * 负责人:阿旻
     * 功能:添加"达成的成就"的文本及文本框,用来输出达成的成就
     * 添加"获得的评价"的文本及文本框,用来输出获得的评价
     * 成就由特殊事件的选择决定,评价由属性选择决定
     * 添加返回主菜单,点击查看人生回顾,重新游戏,退出游戏按钮
     * 点击对应按钮执行对应逻辑,为按钮添加动作监听或鼠标监听
     *
     * 达成成就的逻辑:
     *
     * 获得评价的逻辑:
     *
     * 人生回顾的逻辑:
     *
     * 点击按钮对应的逻辑
     */
    private void initView() {

        //为“返回主菜单"按钮设置大小
        backTOGameMenuButton.setBounds(200, 400, 200, 50);
        backTOGameMenuButton.setBackground(new Color(253, 222, 122));
        //给返回主菜单添加鼠标监听
        this.add(backTOGameMenuButton);
        backTOGameMenuButton.addMouseListener(this);

        //为“查看人生回顾"按钮设置大小
        viewLifeReviewButton.setBounds(200, 500, 200, 50);
        viewLifeReviewButton.setBackground(new Color(253, 222, 122));
        this.add(viewLifeReviewButton);
        viewLifeReviewButton.addMouseListener(this);

        //为“重新游戏"按钮设置大小
        restartButton.setBounds(20, 600, 150, 20);
        restartButton.setBackground(new Color(253, 222, 122));
        this.add(restartButton);
        restartButton.addMouseListener(this);

        //为“退出游戏"按钮设置大小
        exitButton.setBounds(433, 600, 150, 20);
        exitButton.setBackground(new Color(253, 222, 122));
        this.add(exitButton);
        exitButton.addMouseListener(this);

        //标题
        titleLabel.setFont(new Font("楷体", Font.PLAIN, 40));
        titleLabel.setBounds(250, 20, 200, 50);
        this.add(titleLabel);

        //成就
        achieveLabel.setFont(new Font("楷体", Font.PLAIN, 20));
        achieveLabel.setBounds(50, 70, 200, 50);
        this.add(achieveLabel);

        //成就文本框
        achieveTextArea.setBounds(50, 120, 500, 100);
        achieveTextArea.setFont(new Font("楷体", Font.PLAIN, 20));
        this.add(achieveTextArea);

        //评价
        evaluateLabel.setFont(new Font("楷体", Font.PLAIN, 20));
        evaluateLabel.setBounds(50, 220, 200, 50);
        this.add(evaluateLabel);


        //评价文本框
        evaluateTextArea.setBounds(50, 270, 500, 100);
        evaluateTextArea.setFont(new Font("楷体", Font.PLAIN, 20));
        this.add(evaluateTextArea);
    }

    private void initJFrame() {
        //设置长宽(像素)
        this.setSize(603, 680);
        //设置界面的标题
        this.setTitle("人生重开模拟器 v1.0");
        //设置界面置顶
        this.setAlwaysOnTop(true);
        //设置界面居中
        this.setLocationRelativeTo(null);
        //设置关闭模式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //取消默认的居中方式,只有取消了才会按照,x y轴的方式添加组件
        this.setLayout(null);

        //给整个界面添加键盘监听
        //this.addKeyListener(this);
    }

    //鼠标点击事件
    @Override
    public void mouseClicked(MouseEvent e) {
        if (e.getSource() == backTOGameMenuButton) {
            System.out.println("返回主菜单");
            //关闭当前界面
            this.dispose();
            //打开主界面
            new GameMenuJFrame();
        } else if (e.getSource() == viewLifeReviewButton) {

            //打开人生回顾界面
            showJDialog("该功能仍在开发中，敬请期待");
        } else if (e.getSource() == restartButton) {
            this.dispose();
            new SelectAttributesJFrame();
        } else if (e.getSource() == exitButton) {
            System.exit(0);
        }

    }

    //鼠标按下事件
    @Override
    public void mousePressed(MouseEvent e) {

    }

    //鼠标释放事件
    @Override
    public void mouseReleased(MouseEvent e) {

    }

    //鼠标滑入事件
    @Override
    public void mouseEntered(MouseEvent e) {

    }

    //鼠标滑出事件
    @Override
    public void mouseExited(MouseEvent e) {

    }

    //弹窗
    public void showJDialog(String content) {
        //创建一个弹框对象
        JDialog jDialog = new JDialog();
        //给弹框设置大小
        jDialog.setSize(400, 150);
        //让弹框置顶
        jDialog.setAlwaysOnTop(true);
        //让弹框居中
        jDialog.setLocationRelativeTo(null);
        //弹框不关闭永远无法操作下面的界面
        jDialog.setModal(true);

        //创建JLabel对象管理文字并添加到弹框当中
        JLabel warning = new JLabel(content);
        warning.setBounds(0, 0, 200, 150);
        jDialog.getContentPane().add(warning);

        //让弹框展示出来
        jDialog.setVisible(true);
    }



}
